1 module dataframe.main;
2 import dataframe.dataframe;
3 import hdf5.hdf5;
4 
5 import std.exception;
6 import std.stdio;
7 import std.conv;
8 import std.csv;
9 import std.datetime;
10 import std.exception;
11 import std.range:array, stride,only;
12 import std.stdio;
13 import std.variant;
14 import std.string:isNumeric;
15 alias KalVariant=Algebraic!(string,int,long, DateTime, float,double);
16 import std.typecons:tuple,Tuple;
17 
18 auto splitLongTicker(string longTicker)
19 {
20 	import std.string:split;
21 	Tuple!(string,"exchange",string,"ticker") ret;
22 	auto tmp=longTicker.split("/");
23 	enforce(tmp.length==2);
24 	ret.exchange=tmp[0];
25 	ret.ticker=tmp[1];
26 	return ret;
27 }
28 
29 
30 void main1(string[] args)
31 {
32 	import std.string:toLower;
33 	enforce(args.length==3);
34 	auto splitTicker=splitLongTicker(args[2]);
35 	auto readFrame=dataFrameTypedFromSimpleHDF5Array(args[1],splitTicker.exchange, splitTicker.ticker,
36 		["Year","Month","Day","Open","High","Low","Close","Volume","Adj Close"]);
37 	writefln("%s",readFrame.toString);
38 	//writefln("%s,%s",readFrame[0].Year,readFrame[0].Close);
39 	//readFrame[0].Year=99999;
40 	//writefln("%s,%s",readFrame[0].Year,readFrame[0].Close);
41 	//double d=readFrame[0].Close;
42 	//writefln("%s",d);
43 	//writefln("%s/%s",readFrame.loadCell!double(0,"Month"), readFrame.loadCell!double(0,"Close"));
44 	//writefln("%s/%s",readFrame[0].loadCell!double("Month"),readFrame[0].loadCell!double("Close"));
45 }
46 
47 
48 void main2(string[] args)
49 {
50 	import std.string:toLower;
51 	//string fn="/hist/daily/eoddata/WCE_20150721.txt";
52 	//if (args.length>=2)
53 	//	fn=args[1];
54 	//auto titles=["Ticker","Date","Open","High","Low","Close","Volume","Open Interest"];
55 	//auto typedFrame=typedFrameFromCSV(fn,titles);
56 	//typedFrame=typedFrame.mergeFrames(typedFrameFromCSV("/hist/daily/eoddata/WCE_20150720.txt",titles));
57 
58 /+	DataFrame frame;
59 	frame=frame.loadCSVFile(fn,true);
60 	//writefln("%s",frame.toString);
61 	auto types=frame.findColumnTypes;
62 
63 	auto peek=(cast(string)std.file.read(fn)).peekCols;
64 	DataFrameTyped typedFrame;
65 	auto titles=["Ticker","Date","Open","High","Low","Close","Volume","Open Interest"];
66 	/*ColumnType[] columnTypes;
67 	with(ColumnType)
68 		columnTypes=[String,String,Double,Double,Double,Double,Int,Int];*/
69 	if (peek<titles.length)
70 	{
71 		titles.length=peek;
72 		//columnTypes.length=peek;
73 		writefln("shortening to %s cols", peek);
74 	}
75 	typedFrame=typedFrame.setColumnTitles(titles)
76 				.setColumnTypes(types) // columnTypes
77 				.loadCSVFile(fn,titles,true);+/
78 	//writefln("%s", typedFrame);
79 	//typedFrame.saveCSV("temp.csv",true);
80 //	writefln("%s",frame.toString);
81 	//writefln("%s",frame.findColumnTypes);
82 	//auto fn="/hist/hdf5/eod_FOREX.h5";
83 	enforce(args.length>=2);
84 	auto fn=args[1];
85 	//auto series="AUDUSD";
86 	enforce(args.length>=3);
87 	auto destFn=args[2];
88 	//writefln("%s",dataTypesForHDF5(fn,series));
89 	//writefln("%s",dataTypesForHDF5("/hist/hdf5/equitymain.hdf5","NASDAQ/AAPL"));
90 	if(args.length==4)
91 	{
92 			auto readFrame=dataFrameTypedFromHDF5DataSet(fn,args[3]);
93 			readFrame.toHDF5(destFn,args[3]);
94 	}
95 	else
96 	{
97 		foreach(ticker;fn.hdf5Contents)
98 		{
99 			if ((ticker==".") || (ticker==".."))
100 				continue;
101 			try
102 			{
103 				auto readFrame=dataFrameTypedFromHDF5DataSet(fn,ticker);
104 				readFrame.toHDF5(destFn,ticker);
105 			}
106 			catch(Exception e)
107 			{
108 				stderr.writefln("* error - skipping %s:%s",ticker,e.msg);
109 			}
110 			//writefln("%s",readFrame.toString);
111 			//readFrame.saveCSV(series.toLower~".csv",true);
112 		//readFrame.deleteColumn("openInterest");
113 		}
114 	}
115 	//auto h5=dataFrameTypedFromHDF5DataSet("/hist/hdf5/bb/equityindex/IndexTickers.h5","CAC Index");
116 	//writefln("%s",h5.toString);
117 }
118 
119 void main(string[] args)
120 {
121 	writefln("dummy main");
122 }